package com.集合;
@SuppressWarnings("all")
public class 企业中如何选择集合实现类 {
    /**
     * 在开发中，选择什么集合实现类，主要取决于业务操作特点，然后根据集合实现类特性进行选择，分析如下：
     *
     * 1. 先判断存储的类型（一组对象[单列]或一组键值对[双列]）
     * 2. 一组对象[单列]：Collection接口
     *    - 允许重复：List
     *          - 增删多：LinkedList [底层维护了一个双向链表]
     *          - 改查多：ArrayList [底层维护 Object类型的可变数组]
     *    - 不允许重复：Set
     *          - 无序：HashSet [底层是HashMap，维护了一个哈希表 即(数组+链表+红黑树)]
     *          - 排序：TreeSet [老韩举例说明]
     *          - 插入和取出顺序一致：LinkedHashSet，维护数组+双向链表
     *    - 线程安全 Vector
     *
     * 3. 一组键值对[双列]：Map
     *      - 键无序：HashMap [底层是：哈希表 jdk7：数组+链表，jdk8：数组+链表+红黑树]
     *      - 键排序：TreeMap [老韩举例说明]
     *      - 键插入和取出顺序一致：LinkedHashMap
     *      - 读取文件 Properties
     *      - 线程安全 HashTable
     */
}
